/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Pojo;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author jeferson
 */
@Entity
@Table(name = "TB_VENDEDOR", catalog = "musical", schema = "")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "TbVendedor.findAll", query = "SELECT t FROM TbVendedor t"),
    @NamedQuery(name = "TbVendedor.findByVenCodigo", query = "SELECT t FROM TbVendedor t WHERE t.venCodigo = :venCodigo"),
    @NamedQuery(name = "TbVendedor.findByVenNome", query = "SELECT t FROM TbVendedor t WHERE t.venNome = :venNome"),
    @NamedQuery(name = "TbVendedor.findByVenCpf", query = "SELECT t FROM TbVendedor t WHERE t.venCpf = :venCpf"),
    @NamedQuery(name = "TbVendedor.findByVenRg", query = "SELECT t FROM TbVendedor t WHERE t.venRg = :venRg"),
    @NamedQuery(name = "TbVendedor.findByVenEndereco", query = "SELECT t FROM TbVendedor t WHERE t.venEndereco = :venEndereco"),
    @NamedQuery(name = "TbVendedor.findByVenFone", query = "SELECT t FROM TbVendedor t WHERE t.venFone = :venFone"),
    @NamedQuery(name = "TbVendedor.findByVenBairro", query = "SELECT t FROM TbVendedor t WHERE t.venBairro = :venBairro"),
    @NamedQuery(name = "TbVendedor.findByVenLogin", query = "SELECT t FROM TbVendedor t WHERE t.venLogin = :venLogin"),
    @NamedQuery(name = "TbVendedor.findByVenSenha", query = "SELECT t FROM TbVendedor t WHERE t.venSenha = :venSenha"),
    @NamedQuery(name = "TbVendedor.findByVenDtnascimento", query = "SELECT t FROM TbVendedor t WHERE t.venDtnascimento = :venDtnascimento"),
    @NamedQuery(name = "TbVendedor.findByVenDtentrada", query = "SELECT t FROM TbVendedor t WHERE t.venDtentrada = :venDtentrada"),
    @NamedQuery(name = "TbVendedor.findByVenDtsaida", query = "SELECT t FROM TbVendedor t WHERE t.venDtsaida = :venDtsaida")})
public class TbVendedor implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "VEN_CODIGO")
    private Long venCodigo;
    @Basic(optional = false)
    @Column(name = "VEN_NOME")
    private String venNome;
    @Basic(optional = false)
    @Column(name = "VEN_CPF")
    private String venCpf;
    @Basic(optional = false)
    @Column(name = "VEN_RG")
    private String venRg;
    @Basic(optional = false)
    @Column(name = "VEN_ENDERECO")
    private String venEndereco;
    @Basic(optional = false)
    @Column(name = "VEN_FONE")
    private String venFone;
    @Column(name = "VEN_BAIRRO")
    private String venBairro;
    @Basic(optional = false)
    @Column(name = "VEN_LOGIN")
    private String venLogin;
    @Basic(optional = false)
    @Column(name = "VEN_SENHA")
    private String venSenha;
    @Basic(optional = false)
    @Column(name = "VEN_DTNASCIMENTO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date venDtnascimento;
    @Column(name = "VEN_DTENTRADA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date venDtentrada;
    @Column(name = "VEN_DTSAIDA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date venDtsaida;
    @JoinColumn(name = "VEN_CODCARGO", referencedColumnName = "CAR_CODIGO")
    @ManyToOne(optional = false)
    private TbCargo venCodcargo;
    @JoinColumn(name = "VEN_CODCIDADE", referencedColumnName = "CID_CODIGO")
    @ManyToOne(optional = false)
    private TbCidade venCodcidade;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "vendCodvendedor")
    private List<TbVenda> tbVendaList;

    public TbVendedor() {
    }

    public TbVendedor(Long venCodigo) {
        this.venCodigo = venCodigo;
    }

    public TbVendedor(Long venCodigo, String venNome, String venCpf, String venRg, String venEndereco, String venFone, String venLogin, String venSenha, Date venDtnascimento) {
        this.venCodigo = venCodigo;
        this.venNome = venNome;
        this.venCpf = venCpf;
        this.venRg = venRg;
        this.venEndereco = venEndereco;
        this.venFone = venFone;
        this.venLogin = venLogin;
        this.venSenha = venSenha;
        this.venDtnascimento = venDtnascimento;
    }

    public Long getVenCodigo() {
        return venCodigo;
    }

    public void setVenCodigo(Long venCodigo) {
        Long oldVenCodigo = this.venCodigo;
        this.venCodigo = venCodigo;
        changeSupport.firePropertyChange("venCodigo", oldVenCodigo, venCodigo);
    }

    public String getVenNome() {
        return venNome;
    }

    public void setVenNome(String venNome) {
        String oldVenNome = this.venNome;
        this.venNome = venNome;
        changeSupport.firePropertyChange("venNome", oldVenNome, venNome);
    }

    public String getVenCpf() {
        return venCpf;
    }

    public void setVenCpf(String venCpf) {
        String oldVenCpf = this.venCpf;
        this.venCpf = venCpf;
        changeSupport.firePropertyChange("venCpf", oldVenCpf, venCpf);
    }

    public String getVenRg() {
        return venRg;
    }

    public void setVenRg(String venRg) {
        String oldVenRg = this.venRg;
        this.venRg = venRg;
        changeSupport.firePropertyChange("venRg", oldVenRg, venRg);
    }

    public String getVenEndereco() {
        return venEndereco;
    }

    public void setVenEndereco(String venEndereco) {
        String oldVenEndereco = this.venEndereco;
        this.venEndereco = venEndereco;
        changeSupport.firePropertyChange("venEndereco", oldVenEndereco, venEndereco);
    }

    public String getVenFone() {
        return venFone;
    }

    public void setVenFone(String venFone) {
        String oldVenFone = this.venFone;
        this.venFone = venFone;
        changeSupport.firePropertyChange("venFone", oldVenFone, venFone);
    }

    public String getVenBairro() {
        return venBairro;
    }

    public void setVenBairro(String venBairro) {
        String oldVenBairro = this.venBairro;
        this.venBairro = venBairro;
        changeSupport.firePropertyChange("venBairro", oldVenBairro, venBairro);
    }

    public String getVenLogin() {
        return venLogin;
    }

    public void setVenLogin(String venLogin) {
        String oldVenLogin = this.venLogin;
        this.venLogin = venLogin;
        changeSupport.firePropertyChange("venLogin", oldVenLogin, venLogin);
    }

    public String getVenSenha() {
        return venSenha;
    }

    public void setVenSenha(String venSenha) {
        String oldVenSenha = this.venSenha;
        this.venSenha = venSenha;
        changeSupport.firePropertyChange("venSenha", oldVenSenha, venSenha);
    }

    public Date getVenDtnascimento() {
        return venDtnascimento;
    }

    public void setVenDtnascimento(Date venDtnascimento) {
        Date oldVenDtnascimento = this.venDtnascimento;
        this.venDtnascimento = venDtnascimento;
        changeSupport.firePropertyChange("venDtnascimento", oldVenDtnascimento, venDtnascimento);
    }

    public Date getVenDtentrada() {
        return venDtentrada;
    }

    public void setVenDtentrada(Date venDtentrada) {
        Date oldVenDtentrada = this.venDtentrada;
        this.venDtentrada = venDtentrada;
        changeSupport.firePropertyChange("venDtentrada", oldVenDtentrada, venDtentrada);
    }

    public Date getVenDtsaida() {
        return venDtsaida;
    }

    public void setVenDtsaida(Date venDtsaida) {
        Date oldVenDtsaida = this.venDtsaida;
        this.venDtsaida = venDtsaida;
        changeSupport.firePropertyChange("venDtsaida", oldVenDtsaida, venDtsaida);
    }

    public TbCargo getVenCodcargo() {
        return venCodcargo;
    }

    public void setVenCodcargo(TbCargo venCodcargo) {
        TbCargo oldVenCodcargo = this.venCodcargo;
        this.venCodcargo = venCodcargo;
        changeSupport.firePropertyChange("venCodcargo", oldVenCodcargo, venCodcargo);
    }

    public TbCidade getVenCodcidade() {
        return venCodcidade;
    }

    public void setVenCodcidade(TbCidade venCodcidade) {
        TbCidade oldVenCodcidade = this.venCodcidade;
        this.venCodcidade = venCodcidade;
        changeSupport.firePropertyChange("venCodcidade", oldVenCodcidade, venCodcidade);
    }

    @XmlTransient
    public List<TbVenda> getTbVendaList() {
        return tbVendaList;
    }

    public void setTbVendaList(List<TbVenda> tbVendaList) {
        this.tbVendaList = tbVendaList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (venCodigo != null ? venCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof TbVendedor)) {
            return false;
        }
        TbVendedor other = (TbVendedor) object;
        if ((this.venCodigo == null && other.venCodigo != null) || (this.venCodigo != null && !this.venCodigo.equals(other.venCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Pojo.TbVendedor[ venCodigo=" + venCodigo + " ]";
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }
    
}
